package br.edu.unilasalle.simon_api.dao.impl;

import java.util.List;

import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;

import org.springframework.stereotype.Repository;

import br.edu.unilasalle.simon_api.dao.IUsuarioDao;
import br.edu.unilasalle.simon_api.domain.Usuario;

@Repository
public class UsuarioDao extends GenericDao<Usuario, Long> implements IUsuarioDao {
	
	public List<Usuario> findAllUsuario() {
        StringBuilder str = new StringBuilder();
        str.append("select new Usuario(o.id, o.login, o.senha, o.nivel, o.ativo, o.funcionario.id, ");
        str.append("o.funcionario.nome, o.funcionario.sobrenome, o.funcionario.loja.id) from Usuario o ");
        str.append("order by o.funcionario.nome, o.funcionario.sobrenome, o.login");
        TypedQuery<Usuario> q = entityManager.createQuery(str.toString(), Usuario.class);
		return q.getResultList();
    }
	
	public Usuario getUsuarioByLoginSenha(String login, String senha) {
		StringBuilder str = new StringBuilder();
        str.append("select new Usuario(o.id, o.login, o.senha, o.nivel, o.ativo, o.funcionario.id, ");
        str.append("o.funcionario.nome, o.funcionario.sobrenome, o.funcionario.loja.id) from Usuario o ");
        str.append("where o.login = :login and o.senha = :senha and o.ativo = 'S'");
        TypedQuery<Usuario> q = entityManager.createQuery(str.toString(), Usuario.class);
        q.setParameter("login", login);
        q.setParameter("senha", senha);
        try {
        	return q.getSingleResult();
        } catch (NoResultException e) {
        	return new Usuario();
        }
	}
	
}
